<!DOCTYPE html>
<html>
<head>
<link rel="help" href="http://www.w3.org/TR/html51/forms.html#dom-select-item">
<script src="../../../resources/js-test.js"></script>
</head>
<body>
<select id="target">
  <option value="a">a</option>
  <option value="b">b</option>
  <option value="c">c</option>
  <option value="d">d</option>
</select>

<script>
description("Tests that the HTMLSelectElement.item() argument is correctly validated.");

var select = document.getElementById('target');
shouldBe("select.__proto__", "HTMLSelectElement.prototype");

// getter Node item(unsigned long index);
shouldBeEqualToString("select.item(0).value", "a");
shouldBeEqualToString("select.item(1).value", "b");
shouldBeEqualToString("select.item(2).value", "c");
shouldBeEqualToString("select.item(3).value", "d");
shouldBeNull("select.item(4)");
shouldBeNull("select.item(-1)"); // Offset is too large (after wrapping)
shouldBeEqualToString("select.item(-4294967294).value", "c"); // Wraps to 2, which is a valid offset.
shouldThrow("select.item()", '"TypeError: Failed to execute \'item\' on \'HTMLSelectElement\': 1 argument required, but only 0 present."');

</script>
</body>
</html>
